
#ifndef SYMBOLTABLE_H
#define SYMBOLTABLE_H

#include "Type.h"
#include "Object.h"
#include "Scope.h"

namespace mjc {

	class Parser;

	class SymbolTable
	{
	private:
		Scope scope;//current scope
		//predefined stuff
		Type intType;
		Type charType;
		Type nullType;
		Type noType;
		Object chrObject;
		Object ordObject;
		Object lenObject;
		Object noObject;

	public:
		SymbolTable();

		Type& GetIntType() { return intType; }
		Type& GetCharType() { return charType; }
		Type& GetNullType() { return nullType; }
		Type& GetNoType() { return noType; }
		Object& GetChrObject() { return chrObject; }
		Object& GetOrdObject() { return ordObject; }
		Object& GetLenObject() { return lenObject; }
		Object& GetNoObject() { return noObject; }
		Scope* GetScope() { return &scope; }
	};
}

#endif